{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Introduction\n",
    "\n",
    "This tutorial demonstrates how to perform a multi-objective neural architecture search (NAS) on a MobileNetV3 one-shot weight-sharing super-network [1] using the Intel® Neural Compressor Dynamic NAS (DyNAS) search approach. \n",
    "\n",
    "#### Background\n",
    "Neural architecture search, the study of automating the discovery of optimal deep neural network architectures for tasks in domains such as computer vision and natural language processing, has seen rapid growth in the machine learning research community. While there have been many recent advancements in NAS, there is still a significant focus on reducing the computational cost incurred when validating discovered architectures by making search more efficient. Evolutionary algorithms, specifically genetic algorithms, have a history of usage in NAS and continue to gain popularity as a highly efficient way to explore the architecture objective space. In this tutorial, we show how evolutionary algorithms [2] can be paired with lightly trained objective predictors in an iterative cycle to accelerate multi-objective architectural exploration. Specifically, we use a bi-level optimization approach [3] denoted as `dynas`. This technique is ~4x more sample efficient than typical one-shot predictor-based NAS approaches. \n",
    "\n",
    "#### Super-Networks\n",
    "\n",
    "The computational overhead of evaluating DNN architectures during the neural architecture search process can be very costly due to the training and validation cycles. To address the training overhead, novel weight-sharing approaches known as one-shot or super-networks have offered a way to mitigate the training overhead by reducing training times from thousands to a few GPU days. These approaches train a task-specific super-network architecture with a weight-sharing mechanism that allows the sub-networks to be treated as unique individual architectures. This enables sub-network model extraction and validation without a separate training cycle. This tutorial offers pre-trained Once-for-All (OFA) super-networks [1] for the image classification on ImageNet-ilsvrc2012 as well as Transformer Language Translation (based on [6]) for the language translation tasks.\n",
    "\n",
    "#### Methodology\n",
    "\n",
    "The flow of the DyNAS approach (`approach='dynas'`) is shown in the following figure. Currently, three pre-trained super-network options for the image classification task are provided. In the first phase of the search, a small population (`config.dynas.population`) of sub-networks are randomly sampled and evaluated (validation measurement) to provide the initial training set for the inner predictor loop. After the predictors are trained, a multi-objective evolutionary search (`search_algorithm`) is performed in the predictor objective space. After an extensive search is performed, the best performing sub-network configurations are selected to be the next iteration's validation population. The cycle continues until the search concludes when the user defined evaluation count (`config.dynas.num_evals`) is met. \n",
    "   \n",
    "<br>\n",
    "<div>\n",
    "<img src=\"DyNAS_flow.png\" width=\"750\"/>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Prerequisites\n",
    "\n",
    "For released version of Neural Compressor:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip -q install neural_compressor dynast==1.1.0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Alternatievely, if you have a local copy of https://github.com/intel/neural-compressor, you can uncomment and run the code below:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import sys\n",
    "# sys.path.insert(0,'<path to neural compressor>')\n",
    "# !pip install -qr <path to neural compressor>/requirements.txt\n",
    "# !pip install -q dynast==1.1.0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Import Packages"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from neural_compressor.conf.config import NASConfig\n",
    "from neural_compressor.experimental.nas import NAS"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Configure NAS Algorithm\n",
    "\n",
    "The `NASConfig` class allows us to define the appropriate parameters for determining how the neural architecture search is performed. Currently, the following multi-objective evolutionary algorithms are supported by the `dynas` approach: \n",
    "* `'nsga2'`\n",
    "* `'age'`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "config = NASConfig(approach='dynas', search_algorithm='nsga2')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Define Architecture\n",
    "We currently support pre-trained super-networks:\n",
    "\n",
    "1. Once-for-All (OFA) super-networks [4] for the image classification task on ImageNet-ilsvrc2012. In the case where the super-network PyTorch model download fails, you can manually copy the pre-trained models from https://github.com/mit-han-lab/once-for-all and place them in the `.torch/ofa_nets` path.\n",
    "2. Hardware-Aware-Transformers (HAT) supernetwork [6] for language translation task on WMT14 En-De. To run this supernetwork you have to manually download preprocessed dataset from https://github.com/mit-han-lab/hardware-aware-transformers/blob/master/configs/wmt14.en-de/get_preprocessed.sh and pretrained model from https://www.dropbox.com/s/pkdddxvvpw9a4vq/HAT_wmt14ende_super_space0.pt?dl=0\n",
    "3. BERT Base supernetwork finetuned on the [Stanford Sentiment Treebank](https://huggingface.co/datasets/sst2) dataset. You can download the model from [here](https://github.com/IntelLabs/DyNAS-T/blob/bert/model/models/fine_tuned_bert_sst2.pt) and the script to prepare the SST-2 dataset is available [here](https://github.com/NVIDIA/DeepLearningExamples/blob/master/PyTorch/LanguageModeling/BERT/data/create_datasets_from_start.sh#L21).\n",
    "\n",
    "Super-network options (choose 1): \n",
    "- `ofa_resnet50` - based on the ResNet50 architecture [4]. Search space of ~$10^{15}$ architectures.\n",
    "- `ofa_mbv3_d234_e346_k357_w1.0` - based on the MobileNetV3 architecture [5], width multiplier 1.0. Search space of ~$10^{19}$ architectures.\n",
    "- `ofa_mbv3_d234_e346_k357_w1.2` - based on the MobileNetV3 architecture [5], width multiplier 1.2. Search space of ~$10^{19}$ architectures.  \n",
    "- `transformer_lt_wmt_en_de` - based on the Transformer architecture [7].\n",
    "- `bert_base_sst2` - based on the BERT Base architecture, fine-tuned on the [Stanford Sentiment Treebank](https://huggingface.co/datasets/sst2) dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "config.dynas.supernet = 'bert_base_sst2'\n",
    "config.seed = 42"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Select performance metrics\n",
    "\n",
    "Performance metric options are as follows. You can use from 1 to 3 performance objectives to guide the search.\n",
    "\n",
    "Description:\n",
    "* `'accuracy_top1' or 'bleu' or 'accuracy_sst2'` - ImageNet Top-1 Accuracy (%) (for OFA supetnetworks) and Bleu (for Transformer LT) and accuracy on the SST2 dataset.\n",
    "* `'macs'` - Multiply-and-accumulates as measured from FVCore. \n",
    "* `'latency'` - Latency (inference time) measurement (ms).\n",
    "* `'params'` - Number of parameters in the model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "config.dynas.metrics = ['accuracy_sst2', 'macs']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Search parameters\n",
    "\n",
    "* `config.dynas.population` - Size of the population for evolutionary/genetic algorithm (50 recommended)\n",
    "* `config.dynas.num_evals` - Validation measurement count, a higher count comes with greater computational cost but a higher chance of finding optimal sub-networks\n",
    "* `config.dynas.results_csv_path` - Location of the search (validation measurement) results. This file is also used to provide training data to the metric predictors. \n",
    "* `config.dynas.batch_size` - Batch size used during latency measurements.\n",
    "* `config.dynas.dataset_path` - For OFA it's a path to the imagenet-ilsvrc2012 dataset. This can be obtained at: https://www.image-net.org/download.php; For Transformer LT it's a path to preprocessed WMT EnDe directory (`(...)/data/binary/wmt16_en_de`)\n",
    "* `config.dynas.supernet_ckpt_path` - Transformer LT only. Path to downloaded pretrained super-network (`HAT_wmt14ende_super_space0.pt` file)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "config.dynas.population = 50\n",
    "config.dynas.num_evals = 250\n",
    "config.dynas.results_csv_path = 'results_bert_sst2_macs.csv'\n",
    "config.dynas.batch_size = 64\n",
    "config.dynas.dataset_path = '/datasets/SST-2/'  # example\n",
    "config.dynas.supernet_ckpt_path = '/model/glue_ckpt.pt'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Perform Search\n",
    "\n",
    "After the DyNAS configuration parameters are set, the search process can be started. Depending on how many evaluations `config.dynas.num_evals` were defined, the search time can vary from hours to days. \n",
    "The search process will populate the `config.dynas.results_csv_path` file and will also return a list of the final iteration's best sub-network population recommondation. \n",
    "\n",
    "Note: example search results are provided for the plotting section if you wish to skip this step for now. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "agent = NAS(config)\n",
    "results = agent.search()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plot Search Results in the Multi-Objective Space"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "<ipython-input-13-4dc79778ece3>:11: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.\n",
      "  cm = plt.cm.get_cmap('viridis_r')\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 504x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.cm import ScalarMappable\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(7,5))\n",
    "\n",
    "number_of_evals = 500\n",
    "df_dynas = pd.read_csv('results_bertbase_sst2_macs.csv')[:number_of_evals]\n",
    "df_dynas.columns = ['config', 'date', 'macs', 'acc']\n",
    "\n",
    "cm = plt.cm.get_cmap('viridis_r')\n",
    "count = [x for x in range(len(df_dynas))]\n",
    "\n",
    "ax.scatter(df_dynas['macs'].values, df_dynas['acc'].values, marker='^', alpha=0.8, c=count, \n",
    "           cmap=cm, label='Discovered DNN Model', s=10)\n",
    "ax.set_title(f'Intel® Neural Compressor\\nDynamic NAS (DyNAS)\\nSupernet:{config.dynas.supernet}')\n",
    "ax.set_xlabel('MACs', fontsize=13)\n",
    "ax.set_ylabel('SST-2 Accuracy (%)', fontsize=13)\n",
    "ax.legend(fancybox=True, fontsize=10, framealpha=1, borderpad=0.2, loc='lower right')\n",
    "ax.grid(True, alpha=0.3)\n",
    "\n",
    "# Eval Count bar\n",
    "norm = plt.Normalize(0, len(df_dynas))\n",
    "sm = ScalarMappable(norm=norm, cmap=cm)\n",
    "cbar = fig.colorbar(sm, ax=ax, shrink=0.85)\n",
    "cbar.ax.set_title(\"         Evaluation\\n  Count\", fontsize=8)\n",
    "\n",
    "fig.tight_layout(pad=2)\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# References"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[1] Cai, H., Gan, C., & Han, S. (2020). Once for All: Train One Network and Specialize it for Efficient Deployment. ArXiv, abs/1908.09791.   \n",
    "[2] K. Deb, A. Pratap, S. Agarwal and T. Meyarivan, \"A fast and elitist multiobjective genetic algorithm: NSGA-II,\" in IEEE Transactions on Evolutionary Computation, vol. 6, no. 2, pp. 182-197, April 2002, doi: 10.1109/4235.996017. \n",
    "[3] Cummings, D., Sarah, A., Sridhar, S.N., Szankin, M., Muñoz, J.P., & Sundaresan, S. (2022). A Hardware-Aware Framework for Accelerating Neural Architecture Search Across Modalities. ArXiv, abs/2205.10358.   \n",
    "[4] He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep Residual Learning for Image Recognition. 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 770-778.  \n",
    "[5] Howard, A.G., Sandler, M., Chu, G., Chen, L., Chen, B., Tan, M., Wang, W., Zhu, Y., Pang, R., Vasudevan, V., Le, Q.V., & Adam, H. (2019). Searching for MobileNetV3. 2019 IEEE/CVF International Conference on Computer Vision (ICCV), 1314-1324.    \n",
    "[6] Wang, H., Wu, Z., Liu, Z., Cai, H., Zhu, L., Gan, C. and Han, S., 2020. Hat: Hardware-aware transformers for efficient natural language processing. arXiv preprint arXiv:2005.14187.    \n",
    "[7] Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A.N., Kaiser, Ł. and Polosukhin, I., 2017. Attention is all you need. Advances in neural information processing systems, 30."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "dynast_inc_pip_test",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.16"
  },
  "vscode": {
   "interpreter": {
    "hash": "034f8a08a724a63543abaa4596714d81bf71b36e8b4dd0d5bf824a9fea1bc071"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
